/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fachada;

import conexion.Conexion;
import dao.factory.DAOCitaFactory;
import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Usuario
 */
public class FachadaCita {
    
      public ArrayList findByPacienteEval(Date fecha, String turno, String pull, String especialista) {
        ArrayList  arrReturn = null;
        Connection conn = null;
        boolean rollback = false;
        try {
            conn = Conexion.establecerConnection();
            conn.setAutoCommit(false);
            arrReturn =DAOCitaFactory.getDAO().findByPacientesDia(conn,fecha,turno,pull,especialista);
            conn.commit();
            return arrReturn;
        } catch (Exception e) {
            rollback = true;
        //Reportar en log y enviar a paginas de error
        } finally {
            try {
                if (conn != null) {
                    if (rollback) {
                        conn.rollback();
                    }
                    conn.close();
                }
            } catch (SQLException e) {
            //Reportar en log y enviar a paginas de error
            }
        }
        return arrReturn;
    }
     
      
           public ArrayList findByPacientesResistencia(Date fecha, String turno, String pull, String especialista) {
        ArrayList  arrReturn = null;
        Connection conn = null;
        boolean rollback = false;
        try {
            conn = Conexion.establecerConnection();
            conn.setAutoCommit(false);
            arrReturn =DAOCitaFactory.getDAO().findByPacientesResistencia(conn,fecha,turno,pull,especialista);
            conn.commit();
            return arrReturn;
        } catch (Exception e) {
            rollback = true;
        //Reportar en log y enviar a paginas de error
        } finally {
            try {
                if (conn != null) {
                    if (rollback) {
                        conn.rollback();
                    }
                    conn.close();
                }
            } catch (SQLException e) {
            //Reportar en log y enviar a paginas de error
            }
        }
        return arrReturn;
    }

            public ArrayList findPacientesByApellidoId(String apellido, String id, Date fecha, String pull, String especialista) {
        ArrayList arrReturn = null;
        Connection conn = null;
        boolean rollback = false;
        try {
            conn = Conexion.establecerConnection();
            conn.setAutoCommit(false);
            arrReturn = DAOCitaFactory.getDAO().findPacientesByApellidoId(conn, apellido, id, fecha, pull, especialista);
            conn.commit();
            return arrReturn;
        } catch (Exception e) {
            rollback = true;
        //Reportar en log y enviar a paginas de error
        } finally {
            try {
                if (conn != null) {
                    if (rollback) {
                        conn.rollback();
                    }
                    conn.close();
                }
            } catch (SQLException e) {
                //Reportar en log y enviar a paginas de error
            }
        }
        return arrReturn;
    }

    /**
     * Busca a el o los pacientes con un apellido similar o igual
     * @param Comienzo o apellido completo del paciente
     * @param fecha Día de la cita
     * @param pull Pul del especialista
     * @param especialista Identificación del especialista
     * @return Un arreglo con el o los pacientes buscados
     */
    public ArrayList findPacientesByApellido( String apellido, Date fecha, String pull, String especialista) {
        ArrayList arrReturn = null;
        Connection conn = null;
        boolean rollback = false;
        try {
            conn = Conexion.establecerConnection();
            conn.setAutoCommit(false);
            arrReturn = DAOCitaFactory.getDAO().findPacientesByApellido(conn, apellido, fecha, pull, especialista);
            conn.commit();
            return arrReturn;
        } catch (Exception e) {
            rollback = true;
        //Reportar en log y enviar a paginas de error
        } finally {
            try {
                if (conn != null) {
                    if (rollback) {
                        conn.rollback();
                    }
                    conn.close();
                }
            } catch (SQLException e) {
                //Reportar en log y enviar a paginas de error
            }
        }
        return arrReturn;
    }

    /**
     * Busca a el o los pacientes con un documento similar o igual
     * @param Número de identificación completo del paciente
     * @param fecha Día de la cita
     * @param pull Pul del especialista
     * @param especialista Identificación del especialista
     * @return Un arreglo con el o los pacientes buscados
     */
    public ArrayList findPacientesByIdDia( String id, Date fecha, String pull, String especialista) {
        ArrayList arrReturn = null;
        Connection conn = null;
        boolean rollback = false;
        try {
            conn = Conexion.establecerConnection();
            conn.setAutoCommit(false);
            arrReturn = DAOCitaFactory.getDAO().findPacientesById(conn, id, fecha, pull, especialista);
            conn.commit();
            return arrReturn;
        } catch (Exception e) {
            rollback = true;
        //Reportar en log y enviar a paginas de error
        } finally {
            try {
                if (conn != null) {
                    if (rollback) {
                        conn.rollback();
                    }
                    conn.close();
                }
            } catch (SQLException e) {
                //Reportar en log y enviar a paginas de error
            }
        }
        return arrReturn;
    }


}
